﻿package scrn;


import java.io.IOException;
import javax.microedition.lcdui.*;

import mess.*;
import cont.*;
import core.*;


// ================================================ Список находящихся в комнате
public class InRoom extends List implements CommandListener, Win {

//=================================================================== Переменные
// Команды
private Command comBack = new Command("Назад", Command.BACK, 5);
private Command comSel = new Command("Выбрать", Command.ITEM, 1);

private Image one_boy;
private Image one_girl;
private Image one_unk;

// Настройки
private int roomNum; // Номер комнаты, для которой отображается список


//================================================================ Инициализация
public InRoom(String title) {

	super(title, Choice.IMPLICIT);

	Image imWait = null;
	try {
		imWait = Image.createImage("/res/wait.png");
	} catch (IOException e) {
		Mess.err("InRoom.init", "Не могу загрузить рисунок", e);
	}
	this.append("Загрузка списка контактов...", imWait);
	addCommand(comBack);
	setCommandListener(this);

}


//=================================================== Список контактов в комнате
public void inRoomWho(int roomNum, ContOne[] ones) {

	this.roomNum = roomNum;

	setSelectCommand(comSel);

	if (ones.length > 0) {
		// Загружаем картинки

		try {
			one_boy = Image.createImage("/res/one_bl.png");
			one_girl = Image.createImage("/res/one_pi.png");
			one_unk = Image.createImage("/res/one_gr.png");
		} catch (Exception e) {
			Mess.err("AddOne.init", "Не удалось загрузить картинки", e);
		}

		this.deleteAll();

		for (int q = 0; q < ones.length; ++q) {
			add(ones[q]);
		}

	} else {
		Mess.err("InRoom.inRoomWho", "Получен пустой список контактов");
		close(Mess.LOCAL);
	}
}


//============================================================= Добавить контакт
public void add(ContOne one) {

	Image gendImage; // Картинка контакта
	String text; // Краткое описание

	switch (one.info.gender) {
		case Cont.G_MALE:
			gendImage = one_boy;
			break;
		case Cont.G_FEMALE:
			gendImage = one_girl;
			break;
		default:
			gendImage = one_unk;
	}

	text = one.name;
	if (one.info.descr != null) {
		text += ". " + one.info.descr;
	}
	this.append(text, gendImage);
}


//============================================ Освободить ресурсы и закрыть окно
public void close(int from) {

	if (from <= Mess.LOCAL) {
		Man.scrMan.showMain();
	}
}


// ============================================= Отправить сообщение выделенному
public void sendTo() {

	int ind = this.getSelectedIndex();
	String name = this.getString(ind);

	MessRoom messOut = new MessRoom();

	if (name.equals(Setting.login)) {
		messOut.tarType = MessRoom.TAR_ALL;
	} else {
		messOut.tarType = MessRoom.TAR_IN_ROOM;
	}

	messOut.tarNum = ind;
	messOut.tarCache = name;


	Man.scrMan.showRoomText(messOut, roomNum, (ContRoom) Man.contMan.getCont(
			Cont.ROOM, roomNum));

}


//============================================================ Обработчик команд
public void commandAction(Command comm, Displayable disp) {

	if (comm == comSel) {
		sendTo();
	} else {
		close(Mess.LOCAL);
	}

}


public boolean isGraphic() {

	return false;
}


public boolean keyPressed(int keyCode) {

	return false;
}


public void show(Win oldWin) {

}


public boolean chStat(String statText) {

	return false;

	// TODO Auto-generated method stub

}


public void fOnline(boolean fOnline) {

// TODO Auto-generated method stub

}


//============================================= Извещение о пришедшем сообщении
public boolean inText(int contType, int contNum, Message message) {

	this.setTitle(Man.scrMan.getTitStr(contType, contNum, message, 3));
	return false;
}


//====================================================== Тик системного таймера 
public boolean tick() {

	return false;
	// TODO Auto-generated method stub

}


public boolean keyState(int keyState) {

	// TODO Auto-generated method stub
	return false;
}


public boolean[] getComs() {

	// TODO Auto-generated method stub
	return null;
}


public void command(Command command) {

	// TODO Auto-generated method stub
	
}


}
